vsftp 利用mysql 验证虚拟账户

安装vsftpd

1
yum install -y vsftpd

        编辑vsftpd.conf

        内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
listen=YES
connect_from_port_20=YES
pasv_enable=YES
tcp_wrappers=YES
local_enable=YES
chroot_local_user=yes
anonymous_enable=NO
guest_enable=YES
guest_username=vsftpdguest
user_config_dir=/etc/vsftpd/vsftpd_user_conf
pam_service_name=/etc/pam.d/vsftpd
dirmessage_enable=YES
idle_session_timeout=600
check_shell=NO

        创建一个虚拟用户映射系统用户

1
useradd –s /sbin/nologin vsftpdguest

安装 mysql

        具体步骤参考 MySQL安装

安装 pam-mysql

1
2
3
4
5
wget http://cdnetworks-kr-1.dl.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz
tar zxvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
./configure --with-mysql=/usr/local/mysql --with-pam=/usr --with-pam-mods-dir=/usr/lib
make && make install

创建vsftp 库和相关的表并授权

1
2
3
4
5
6
>create database vsftp;
>use vsftp ;
>create table users ( name char(16) binary ,passwd char(125) binary ) ;
>insert into users (name,passwd) values ('test001',password('123456'));
>insert into users (name,passwd) values ('test002',password('234567'));
>grant select on vsftp.users to vsftpdguest@localhost identified by 'vsftpdguest';

创建虚拟账户的配置文件

1
2
3
mkdir /etc/vsftpd/vsftpd_user_conf
cd /etc/vsftpd/vsftpd_user_conf
vim test001

        内容如下

1
2
3
4
local_root=/ftp/
write_enable=YES
virtual_use_local_privs=YES
chmod_enable=YES

编辑验证文件

1
vim /etc/pam.d/vsftpd

        内容如下

1
2
3
#%PAM-1.0
auth required /usr/lib/pam_mysql.so user=vsftpdguest passwd=vsftpdguest host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=2
account required /usr/lib/pam_mysql.so user=vsftpdguest passwd=vsftpdguest host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=2

        如果不想使用mysql也可以使用文件的形式来搞虚拟账号,请参考vsftp部署和优化